﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace sy2_8_2_
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string s = textBox1.Text;
            // 验证输入是否为单个字符
            if (s.Length != 1)
            {
                MessageBox.Show("只能输入1个字符!");
                textBox1.Text = "";
                textBox1.Focus();
                return;
            }

            char c = s[0];
            int loopCount, baseNum;
            // 确定基准ASCII码
            if (Char.IsNumber(c))
                baseNum = 49;    // 数字'1'的ASCII码
            else if (Char.IsUpper(c))
                baseNum = 65;    // 大写字母'A'的ASCII码
            else if (Char.IsLower(c))
                baseNum = 97;    // 小写字母'a'的ASCII码
            else
            {
                MessageBox.Show("您输入的字符不合法，只能是大小写字母或数字1-9！");
                textBox1.Text = "";
                textBox1.Focus();
                return;
            }

            // 计算循环次数（字符的总个数）
            loopCount = c - baseNum + 1;
            label3.Text = "";

            // 外层循环：控制行数
            for (int i = 0; i < loopCount; i++)
            {
                // 内层循环1：输出前置空格（实现居中）
                for (int j = loopCount; j > i + 1; j--)
                {
                    label3.Text += " ";
                }
                // 内层循环2：输出当前行的字符
                for (int k = 0; k < 2 * i + 1; k++)
                {
                    label3.Text += (char)(baseNum + i);
                }
                // 换行
                label3.Text += "\r\n";
            }
        }

        // 清空按钮事件
        private void button2_Click(object sender, EventArgs e)
        {
            textBox1.Text = "";
            label3.Text = "输出结果";
        }

        // 窗体加载事件
        private void Form1_Load(object sender, EventArgs e)
        {
            label3.Text = "输出结果";
        }
    }
}
